Skip Headers

Oracle® interMedia Reference 10g Release 2 (10.2) Part Number B14297-01 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# F Metadata Schemas

This appendix describes the XML schemas used by the metadata methods of the ORDImage object type. These schemas are registered in Oracle Database when Oracle interMedia ("interMedia") is installed. The schemas may be examined by querying the dictionary view `ALL_XML_SCHEMAS`. The schemas are also available as files located in the `ord/xml/xsd` directory under `<ORACLE_HOME>`.

The following XML schemas are described in this appendix:

- XML Schema for DICOM Metadata

- XML Schema for EXIF Metadata

- XML Schema for IPTC-IIM Metadata

- XML Schema for ORDImage Attributes

- XML Schema for XMP Metadata

For additional information about XML schemas, see the World Wide Web Consortium Web site at

`http://www.w3.org/XML/Schema`

See Oracle interMedia User's Guide for more information about the Metadata and DICOM features.

## F.1 XML Schema for DICOM Metadata

This schema is the content model for Digital Imaging and Communications in Medicine (DICOM) metadata retrieved from images. The namespace for this schema is `http://xmlns.oracle.com/ord/meta/dicomImage`.

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns="http://xmlns.oracle.com/ord/meta/dicomImage" targetNamespace="http://xmlns.oracle.com/ord/meta/dicomImage"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:annotation>
      <xs:documentation>

        Introduction
          This schema defines the set of DICOM metadata published by Oracle interMedia
          ORDImage function getDicomMetadata().

          The purpose of this set of functions is to extract from a DICOM image a set
          of attributes to describe the image in XML, allowing easy browsing and
          retrieval.

          Question mark "?" means optional items

        Structure Overview
          DICOM_IMAGE
            ORD_DICOM_HEADER
              VERSION
              DICOM_STANDARD_VERSION
              DICOM_STANDARD_RELEASE
            FILE_META_HEADER
              MEDIA_STORAGE_SOP_CLASS_UID
              MEDIA_STORAGE_SOP_INSTANCE_UID
              TRANSFER_SYNTAX_UID
              IMPLEMENTATION_CLASS_UID
              IMPLEMENTATION_VERSION_NAME
              SOURCE_APPLICATION_ENTITY_TITLE
            PATIENT
              NAME
              ID
              BIRTH_DATE
              SEX
            GENERAL_STUDY
              INSTANCE_UID
              DATE
              TIME
              REFERING_PHYSICIANS_NAME
              ID
              ACCESSION_NUMBER
              DESCRIPTION?
            PATIENT_STUDY?
              ADMITTING_DIAGNOSES_DESCRIPTION
              ADMITTING_DIAGNOSES_CODE_SEQUENCE
            GENERAL_SERIES
              MODALITY
              INSTANCE_UID
              DATE
              TIME
              PERFORMING_PHYSICIANS_NAME
              BODY_PART_EXAMINED
              PATIENT_POSITION
              PERFORMED_PROCEDURE_STEP_ID
              PERFORMED_PROCEDURE_STEP_START_DATE
              PERFORMED_PROCEDURE_STEP_START_TIME
              PERFORMED_PROCEDURE_STEP_DESCRIPTION
              PERFORMED_PROTOCOL_CODE_SEQUENCE
            GENERAL_EQUIPMENT?
              MANUFACTURER
            GENERAL_IMAGE?
              INSTANCE_NUMBER
              ACQUISITION_NUMBER
              ACQUISITION_DATE
              ACQUISITION_TIME
              ACQUISITION_DATETIME
              PATIENT_ORIENTATION
              FRAME_LATERALITY
              ANATOMIC_REGION
            IMAGE_PIXEL?
              SAMPLES_PER_PIXEL
              PHOTOMETRIC_INTERPRETATION
              ROWS
              COLUMNS
              BIT_ALLOCATED
              BIT_STORED
              HIGH_BIT
              PIXEL_REPRESENTATION
                    PLANAR_CONFIGURATION
              PIXEL_ASPECT_RATIO

            SOP_COMMON
              CLASS_UID
              INSTANCE_UID
              SPECIFIC_CHARACTER_SET

        List of DICOM attribute tags appeared in this schema
          (0002, 0002)  MEDIA_STORAGE_SOP_CLASS_UID
          (0002, 0003)  MEDIA_STORAGE_SOP_INSTANCE_UID
          (0002, 0010)  TRANSFER_SYNTAX_UID
          (0002, 0012)  IMPLEMENTATION_CLASS_UID
          (0002, 0013)  IMPLEMENTATION_VERSION_NAME
          (0002, 0016)  SOURCE_APPLICATION_ENTITY_TITLE

          (0008, 0005)  SPECIFIC_CHARACTER_SET
          (0008, 0016)  SOP CLASS_UID
          (0008, 0018)  SOP INSTANCE_UID
          (0008, 0020)  STUDY DATE
          (0008, 0021)  SERIES DATE
          (0008, 0022)  ACQUISITION_DATE
          (0008, 002A)  ACQUISITION_DATETIME
          (0008, 0030)  STUDY TIME
          (0008, 0031)  SERIES TIME
          (0008, 0032)  ACQUISITION_TIME
          (0008, 0050)  ACCESSION_NUMBER
          (0008, 0060)  MODALITY
          (0008, 0070)  MANUFACTURER
          (0008, 0090)  REFERING_PHYSICIANS_NAME
          (0008, 1030)  STUDY DESCRIPTION
          (0008, 1050)  PERFORMING_PHYSICIANS_NAME
          (0008, 1080)  ADMITTING_DIAGNOSES_DESCRIPTION
          (0008, 1084)  ADMITTING_DIAGNOSES_CODE_SEQUENCE
          (0008, 2218)  ANATOMIC_REGION

          (0010, 0010)  PATIENT NAME
          (0010, 0020)  PATIENT ID
          (0010, 0030)  PATIENT BIRTH_DATE
          (0010, 0040)  PATIENT SEX

          (0018, 0015)  BODY_PART_EXAMINED
          (0018, 5100)  PATIENT_POSITION

          (0020, 000D)  STUDY INSTANCE_UID
          (0020, 000E)  SERIES INSTANCE_UID
          (0020, 0010)  STUDY ID
          (0020, 0012)  ACQUISITION_NUMBER
          (0020, 0013)  INSTANCE_NUMBER
          (0020, 0020)  PATIENT_ORIENTATION
          (0020, 9072)  FRAME_LATERALITY

          (0028, 0002)  SAMPLES_PER_PIXEL
          (0028, 0004)  PHOTOMETRIC_INTERPRETATION
          (0028, 0006)  PLANAR_CONFIGURATION
          (0028, 0010)  ROWS
          (0028, 0011)  COLUMNS
          (0028, 0034)  PIXEL_ASPECT_RATIO
          (0028, 0100)  BIT_ALLOCATED
          (0028, 0101)  BIT_STORED
          (0028, 0102)  HIGH_BIT
          (0028, 0103)  PIXEL_REPRESENTATION

          (0040, 0244)  PERFORMED_PROCEDURE_STEP_START_DATE
          (0040, 0245)  PERFORMED_PROCEDURE_STEP_START_TIME
          (0040, 0253)  PERFORMED_PROCEDURE_STEP_ID
          (0040, 0254)  PERFORMED_PROCEDURE_STEP_DESCRIPTION
          (0040, 0260)  PERFORMED_PROTOCOL_CODE_SEQUENCE

      </xs:documentation>
    </xs:annotation>

    <xs:element name="DICOM_IMAGE">
      <xs:complexType>
      <xs:sequence>
        <xs:element name="ORD_DICOM_HEADER">
           <xs:complexType>
          <xs:sequence>
            <!-- XML document version number is "1.0" for database release 10gR2 -->
            <xs:element name="VERSION" type="SH"/>
            <!-- DICOM standard version this XML document is based on, for database 10gR2, it is "3"  -->
            <xs:element name="DICOM_STANDARD_VERSION" type="SH"/>
            <!-- DICOM standard release this XML document is based on, for database 10gR2, it is "2003"  -->
            <xs:element name="DICOM_STANDARD_RELEASE" type="SH"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>
        <xs:element name="FILE_META_HEADER">
           <xs:complexType>
          <xs:sequence>
            <!-- (0002, 0002), mandatory-->
            <xs:element name="MEDIA_STORAGE_SOP_CLASS_UID" type="UI"/>
            <!-- (0002, 0003), mandatory -->
            <xs:element name="MEDIA_STORAGE_SOP_INSTANCE_UID" type="UI"/>
            <!-- (0002, 0010), mandatory -->
            <xs:element name="TRANSFER_SYNTAX_UID" type="UI"/>
            <!-- (0002, 0012), mandatory -->
            <xs:element name="IMPLEMENTATION_CLASS_UID" type="UI"/>
            <!-- (0002, 0013), nullable -->
            <xs:element name="IMPLEMENTATION_VERSION_NAME" type="SH" minOccurs="0" nillable="true"/>
            <!-- (0002, 0016), nullable -->
            <xs:element name="SOURCE_APPLICATION_ENTITY_TITLE" type="AE" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>
        <xs:element name="PATIENT" minOccurs="0">
           <xs:complexType>
          <xs:sequence>
            <!-- (0010, 0010), nullable -->
            <xs:element name="NAME" type="PN" minOccurs="0" nillable="true"/>
            <!-- (0010, 0020), nullable -->
            <xs:element name="ID" type="LO" minOccurs="0" nillable="true"/>
            <!-- (0010, 0030), nullable -->
            <xs:element name="BIRTH_DATE" type="DA" minOccurs="0" nillable="true"/>
            <!-- (0010, 0040), nullable -->
            <xs:element name="SEX" type="CS" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>
        <xs:element name="GENERAL_STUDY">
           <xs:complexType>
          <xs:sequence>
            <!-- (0020, 000D) mandatory -->
            <xs:element name="INSTANCE_UID" type="UI"/>
            <!-- (0008, 0020), nullable -->
            <xs:element name="DATE" type="DA" minOccurs="0" nillable="true"/>
            <!-- (0008, 0030), nullable -->
            <xs:element name="TIME" type="TM" minOccurs="0" nillable="true"/>
            <!-- (0008, 0090), nullable -->
            <xs:element name="REFERING_PHYSICIANS_NAME" type="PN" minOccurs="0" nillable="true"/>
            <!-- (0020, 0010), nullable -->
            <xs:element name="ID" type="SH" minOccurs="0" nillable="true"/>
            <!-- (0008, 0050), nullable -->
            <xs:element name="ACCESSION_NUMBER" type="SH" minOccurs="0" nillable="true"/>
            <!-- (0008, 1030) optional -->
            <xs:element name="DESCRIPTION" type="LO" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>
        <xs:element name="PATIENT_STUDY" minOccurs="0">
           <xs:complexType>
          <xs:sequence>
            <!-- (0008, 1080), optional -->
            <xs:element name="ADMITTING_DIAGNOSES_DESCRIPTION" type="LO" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
            <!-- (0008, 1084), optional -->
            <xs:element name="ADMITTING_DIAGNOSES_CODE_SEQUENCE" type="CODE_SQ" minOccurs="0" nillable="true"/>

          </xs:sequence>
           </xs:complexType>
        </xs:element>

        <xs:element name="GENERAL_SERIES">
           <xs:complexType>
          <xs:sequence>
            <!-- (0008, 0060), mandatory -->
            <xs:element name="MODALITY" type="CS"/>
            <!-- (0020, 000E), mandatory -->
            <xs:element name="INSTANCE_UID" type="UI"/>
            <!-- (0008, 0021), optional -->
            <xs:element name="DATE" type="DA" minOccurs="0" nillable="true"/>
            <!-- (0008, 0031), optional -->
            <xs:element name="TIME" type="TM" minOccurs="0" nillable="true"/>
            <!-- (0008, 1050), optional -->
            <xs:element name="PERFORMING_PHYSICIANS_NAME" type="PN" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
            <!-- (0018, 0015), optional -->
            <!-- Note will not replace with modality specific values -->
            <xs:element name="BODY_PART_EXAMINED" type="CS" minOccurs="0" nillable="true"/>
            <!-- (0018, 5100), conditional -->
            <xs:element name="PATIENT_POSITION" type="CS" minOccurs="0" nillable="true"/>
            <!-- (0040, 0253), optional -->
            <xs:element name="PERFORMED_PROCEDURE_STEP_ID" type="SH" minOccurs="0" nillable="true"/>
            <!-- (0040, 0244), optional -->
            <xs:element name="PERFORMED_PROCEDURE_STEP_START_DATE" type="DA" minOccurs="0" nillable="true"/>
            <!-- (0040, 0245), optional -->
            <xs:element name="PERFORMED_PROCEDURE_STEP_START_TIME" type="TM" minOccurs="0" nillable="true"/>
            <!-- (0040, 0254), optional -->
            <xs:element name="PERFORMED_PROCEDURE_STEP_DESCRIPTION" type="LO" minOccurs="0" nillable="true"/>
            <!-- (0040, 0260), optional -->
            <xs:element name="PERFORMED_PROTOCOL_CODE_SEQUENCE" type="CODE_SQ" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>

        <xs:element name="GENERAL_EQUIPMENT" minOccurs="0">
           <xs:complexType>
          <xs:sequence>
            <!-- (0008, 0070), nullable -->
            <xs:element name="MANUFACTURER" type="LO" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>

        <xs:element name="GENERAL_IMAGE" minOccurs="0">
           <xs:complexType>
          <xs:sequence>
            <!-- (0020, 0013), nullable -->
            <xs:element name="INSTANCE_NUMBER" type="IS" minOccurs="0" nillable="true"/>
            <!-- (0020, 0012), optional -->
            <xs:element name="ACQUISITION_NUMBER" type="IS" minOccurs="0" nillable="true"/>
            <!-- (0008, 0022), optional -->
            <xs:element name="ACQUISITION_DATE" type="DA" minOccurs="0" nillable="true"/>
            <!-- (0008, 0032), optional -->
            <xs:element name="ACQUISITION_TIME" type="TM" minOccurs="0" nillable="true"/>
            <!-- (0008, 002A), optional -->
            <xs:element name="ACQUISITION_DATETIME" type="DT" minOccurs="0" nillable="true"/>
            <!-- (0020, 0020), conditional -->
            <xs:element name="PATIENT_ORIENTATION" type="CS" minOccurs="0" maxOccurs="2" nillable="true"/>
            <!-- (0020, 9072) conditional-->
            <xs:element name="FRAME_LATERALITY" type="CS" minOccurs="0" nillable="true"/>
            <!-- (0008, 2218) Frame anatomy macro, conditional -->
            <xs:element name="ANATOMIC_REGION" type="CODE_SQ" minOccurs="0" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>

        <xs:element name="IMAGE_PIXEL" minOccurs="0">
           <xs:complexType>
          <xs:sequence>
            <!-- (0028, 0002), mandatory -->
            <xs:element name="SAMPLES_PER_PIXEL" type="US" />
            <!-- (0028, 0004), mandatory -->
            <xs:element name="PHOTOMETRIC_INTERPRETATION" type="CS" />
            <!-- (0028, 0010), mandatory -->
            <xs:element name="ROWS" type="US" />
            <!-- (0028, 0011), mandatory -->
            <xs:element name="COLUMNS" type="US" />
            <!-- (0028, 0100), mandatory -->
            <xs:element name="BIT_ALLOCATED" type="US" />
            <!-- (0028, 0101), mandatory -->
            <xs:element name="BIT_STORED" type="US" />
            <!-- (0028, 0102), mandatory -->
            <xs:element name="HIGH_BIT" type="US" />
            <!-- (0028, 0103), mandatory -->
            <xs:element name="PIXEL_REPRESENTATION" type="US" />
            <!-- (7FE0, 0010) PIXEL_DATA, not included -->
            <!-- (0028, 0006), conditional -->
            <xs:element name="PLANAR_CONFIGURATION" type="US" minOccurs="0" nillable="true" />
            <!-- (0028, 0034), conditional -->
            <xs:element name="PIXEL_ASPECT_RATIO" type="IS" minOccurs="0" maxOccurs="2" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>

        <xs:element name="SOP_COMMON">
           <xs:complexType>
          <xs:sequence>
            <!-- (0008, 0016), mandatory -->
            <xs:element name="CLASS_UID" type="UI"/>
            <!-- (0008, 0018), mandatory -->
            <xs:element name="INSTANCE_UID" type="UI"/>
            <!-- (0008, 0005) -->
            <xs:element name="SPECIFIC_CHARACTER_SET" type="CS" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
          </xs:sequence>
           </xs:complexType>
        </xs:element>

      </xs:sequence>
      </xs:complexType>
    </xs:element>

    <!-- Complex data type -->
    <!-- code sequence -->
    <xs:complexType name="CODE_SQ">
      <xs:sequence>
        <xs:element name="CODE_SEQUENCE" type="CODE_SEQUENCE" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CODE_SEQUENCE">
      <xs:sequence>
        <xs:element name="ITEM_NUMBER" type="xs:positiveInteger"/>
        <xs:element name="CODE_VALUE" type="xs:string"/>
        <xs:element name="CODING_SCHEME" type="xs:string"/>
        <xs:element name="CODING_SCHEME_VERSION" type="xs:string" minOccurs="0"/>
        <xs:element name="CODING_MEANING" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>

    <!-- Simple data types -->
    <!-- Application Entity -->
    <xs:simpleType name="AE">
      <xs:restriction base="xs:string">
        <xs:maxLength value="16"/>
      </xs:restriction>
    </xs:simpleType>

    <!-- Coded String -->
    <xs:simpleType name="CS">
      <xs:restriction base="xs:token">
        <xs:maxLength value="16"/>
      </xs:restriction>
    </xs:simpleType>

    <!-- DAte -->
    <xs:simpleType name="DA">
      <xs:restriction base="xs:date"/>
    </xs:simpleType>

    <!-- DateTime -->
    <xs:simpleType name="DT">
      <xs:restriction base="xs:dateTime"/>
    </xs:simpleType>

    <!-- Integer String -->
    <xs:simpleType name="IS">
      <xs:restriction base="xs:integer"/>
    </xs:simpleType>

    <!-- LOng string -->
    <xs:simpleType name="LO">
      <xs:restriction base="xs:string">
        <xs:maxLength value="64"/>
      </xs:restriction>
    </xs:simpleType>

    <!-- Person Name -->
    <xs:simpleType name="PN">
      <xs:restriction base="xs:token">
        <xs:maxLength value="64"/>
      </xs:restriction>
    </xs:simpleType>

    <!-- SHort String -->
    <xs:simpleType name="SH">
      <xs:restriction base="xs:string">
        <xs:maxLength value="16"/>
      </xs:restriction>
    </xs:simpleType>

    <!-- Short String -->
    <xs:simpleType name="SS">
      <xs:restriction base="xs:short"/>
    </xs:simpleType>

    <!-- TiMe -->
    <xs:simpleType name="TM">
      <xs:restriction base="xs:time"/>
    </xs:simpleType>

    <!-- UId -->
    <xs:simpleType name="UI">
      <xs:restriction base="xs:token">
        <xs:maxLength value="64"/>
        <xs:pattern value='([0-9]+\.)*[0-9]+'/>
      </xs:restriction>
    </xs:simpleType>

    <!-- Unsigned Short -->
    <xs:simpleType name="US">
      <xs:restriction base="xs:unsignedShort"/>
    </xs:simpleType>

    </xs:schema>

## F.2 XML Schema for EXIF Metadata

This schema is the content model for EXIF metadata retrieved from images. The namespace for this schema is `http://xmlns.oracle.com/ord/meta/exif`.

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright (c) 2004, 2005, Oracle.  All rights reserved. -->
    <xsd:schema targetNamespace="http://xmlns.oracle.com/ord/meta/exif"
                xmlns="http://xmlns.oracle.com/ord/meta/exif"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                elementFormDefault="qualified"
                attributeFormDefault="unqualified"
                version="1.0">

      <xsd:annotation>
        <xsd:documentation>

          Introduction

            This is the Oracle interMedia schema for image metadata stored
            in the EXIF format for digital still cameras. This schema supports
            tags defined up to EXIF version 2.21

            Metadata extracted only from the 0th IFD. For JPEG images, this means
            that the metadata comes from the main image in the file. Metadata is not
            extracted for the thumbnail image (1st IFD).

          Structure

            This schema defines a single global element exifMetadata which
            contains up to four child elements. Each child element contains tags
            from a TIFF IFD directory as defined by the EXIF standard.

                  TiffIfd contains tags from the TIFF IFD.
                  ExifIfd contains tags from the EXIF IFD.
                  GpsIfd  contains tags from the GPS IFD.
                  InteroperabilityIfd contains tags from the Interoperability IFD.

            All elements that derive directly from EXIF tags contain a required
            "tag" attribute. The value of this attribute is the Tag ID value as
            defined in the EXIF standard.

          Unsupported tags
            The table below lists tags that are defined by the EXIF standard
            but which the current version of Oracle interMedia does not
            read from image files. Note that this schema does define data
            models for these tags and future versions of Oracle
            interMedia may parse these fields from image files. Those tags
            could be represented by documents conforming to this schema.

              These tags are from the TIFF IFD
              tag   301:  TransferFunction
              tag   318:  WhitePoint
              tag   319:  PrimaryChromaticities
              tag   529:  YCbCrCoefficients
              tag   532:  ReferenceWhiteBlack

              tag   273:  StripOffsets
              tag   278:  RowsPerStrip
              tag   279:  StripByteCounts
              tag   513:  JPEGInterChangeFormat
              tag   514:  JPEGInterChangeFormatLength

              These tags are from the EXIF IFD

              tag 34855:  ISOSpeedRatings
              tag 34856:  OECF
              tag 37396:  SubjectArea
              tag 37500:  MakerNote
              tag 41484:  SpatialFrequencyResponse
              tag 41492:  SubjectLocation
              tag 41730:  CFAPattern
              tag 41995:  DeviceSettingsDescription
              tag 42016:  ImageUniqueID

        </xsd:documentation>
      </xsd:annotation>

      <!--
        ATTRIBUTE DEFINITIONS
       -->
      <xsd:attributeGroup name="exifAttrs">
        <xsd:annotation>
          <xsd:documentation>
             This attribute group defines a single attribute that is required
             for all elements. The tag attribute value is the TIFF tag value
             (in decimal) that is the datasource  for the tag.
          </xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="tag" type="xsd:nonNegativeInteger" use="required"/>
      </xsd:attributeGroup>

      <!-- BASE TYPE DEFINITIONS
             Base types are formed from the simple XML schema types.
             Sometimes restrictions are added.
             They are extended with the required "tag" attribute
       -->
      <xsd:complexType name="positiveIntegerType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:positiveInteger">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="nonNegativeIntegerType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:nonNegativeInteger">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="stringType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:string">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="nonNegativeRealType">
        <xsd:simpleContent>
          <xsd:extension base="nonNegativeReal">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="nonNegativeReal">
        <xsd:restriction base="xsd:float">
          <xsd:minInclusive value="0"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="realType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:float">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="dateType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:date">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="dateTimeType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:dateTime">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="timeType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:time">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <!-- EXIF TYPE DEFINITIONS
           Generally these types are formed from a simple type that is restricted.
           The simple type is extended with the required 'tag' attribute
           These types form the basis for the document elements
        -->
      <xsd:complexType name="colorSpaceType">
        <xsd:simpleContent>
          <xsd:extension base="colorSpace_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="colorSpace_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="sRGB"/>
          <xsd:enumeration value="Uncalibrated"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="exposureProgramType">
        <xsd:simpleContent>
          <xsd:extension base="exposureProgram_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="exposureProgram_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Not defined"/>
          <xsd:enumeration value="Manual"/>
          <xsd:enumeration value="Normal program"/>
          <xsd:enumeration value="Aperture priority"/>
          <xsd:enumeration value="Shutter priority"/>
          <xsd:enumeration value="Creative program"/>
          <xsd:enumeration value="Action program"/>
          <xsd:enumeration value="Portrait mode"/>
          <xsd:enumeration value="Landscape mode"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="meteringModeType">
        <xsd:simpleContent>
          <xsd:extension base="meteringMode_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="meteringMode_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="unknown"/>
          <xsd:enumeration value="Average"/>
          <xsd:enumeration value="Center Weighted Average"/>
          <xsd:enumeration value="Spot"/>
          <xsd:enumeration value="MultiSpot"/>
          <xsd:enumeration value="Pattern"/>
          <xsd:enumeration value="Partial"/>
          <xsd:enumeration value="other"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="lightSourceType">
        <xsd:simpleContent>
          <xsd:extension base="lightSource_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="lightSource_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="unknown"/>
          <xsd:enumeration value="Daylight"/>
          <xsd:enumeration value="Fluorescent"/>
          <xsd:enumeration value="Tungsten"/>
          <xsd:enumeration value="Flash"/>
          <xsd:enumeration value="Fine weather"/>
          <xsd:enumeration value="Cloudy weather"/>
          <xsd:enumeration value="Shade"/>
          <xsd:enumeration value="Daylight fluorescent"/>
          <xsd:enumeration value="Day white fluorescent"/>
          <xsd:enumeration value="Cool white fluorescent"/>
          <xsd:enumeration value="Standard light A"/>
          <xsd:enumeration value="Standard light B"/>
          <xsd:enumeration value="Standard light C"/>
          <xsd:enumeration value="D55"/>
          <xsd:enumeration value="D65"/>
          <xsd:enumeration value="D75"/>
          <xsd:enumeration value="D50"/>
          <xsd:enumeration value="ISO studio tungsten"/>
          <xsd:enumeration value="other light source"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="flashType">
        <xsd:sequence>
          <xsd:element name="Fired" type="yesNo_t"/>
          <xsd:element name="Return" type="flashReturn_t" minOccurs="0"/>
          <xsd:element name="Mode" type="flashMode_t" minOccurs="0"/>
          <xsd:element name="Function" type="yesNo_t" minOccurs="0"/>
          <xsd:element name="RedEyeReduction" type="yesNo_t" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>
      <xsd:simpleType name="yesNo_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Yes"/>
          <xsd:enumeration value="No"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:simpleType name="flashReturn_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="No strobe return function"/>
          <xsd:enumeration value="Strobe return not detected"/>
          <xsd:enumeration value="Strobe return detected"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:simpleType name="flashMode_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="unknown"/>
          <xsd:enumeration value="Compulsory firing"/>
          <xsd:enumeration value="Compulsory suppression"/>
          <xsd:enumeration value="Auto"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="resolutionType">
        <xsd:simpleContent>
          <xsd:extension base="resolution_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="resolution_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="inches"/>
          <xsd:enumeration value="centimeters"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="sensingMethodType">
        <xsd:simpleContent>
          <xsd:extension base="sensingMethod_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="sensingMethod_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Not defined"/>
          <xsd:enumeration value="One-chip color area"/>
          <xsd:enumeration value="Two-chip color area"/>
          <xsd:enumeration value="Three-chip color area"/>
          <xsd:enumeration value="Color-sequential area"/>
          <xsd:enumeration value="Trilinear"/>
          <xsd:enumeration value="Color sequential linear"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="fileSourceType">
        <xsd:simpleContent>
          <xsd:extension base="fileSource_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="fileSource_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="others"/>
          <xsd:enumeration value="scanner of transparent type"/>
          <xsd:enumeration value="scanner of reflex type"/>
          <xsd:enumeration value="DSC"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="bitsPerSampleType">
        <xsd:simpleContent>
          <xsd:extension base="bitsPerSample_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="bitsPerSample_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="8,8,8"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="compressionType">
        <xsd:simpleContent>
          <xsd:extension base="compression_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="compression_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="uncompressed"/>
          <xsd:enumeration value="JPEG"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="photometricInterpretationType">
        <xsd:simpleContent>
          <xsd:extension base="photometricInterpretation_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="photometricInterpretation_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="RGB"/>
          <xsd:enumeration value="YCbCr"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="orientationType">
        <xsd:simpleContent>
          <xsd:extension base="orientation_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="orientation_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="top left"/>
          <xsd:enumeration value="top right"/>
          <xsd:enumeration value="bottom right"/>
          <xsd:enumeration value="bottom left"/>
          <xsd:enumeration value="left top"/>
          <xsd:enumeration value="right top"/>
          <xsd:enumeration value="right bottom"/>
          <xsd:enumeration value="left bottom"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="planarConfigurationType">
        <xsd:simpleContent>
          <xsd:extension base="planarConfiguration_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="planarConfiguration_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="chunky"/>
          <xsd:enumeration value="planar"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="yCbCrSubSamplingType">
        <xsd:simpleContent>
          <xsd:extension base="yCbCrSubSampling_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="yCbCrSubSampling_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="4:2:2"/>
          <xsd:enumeration value="4:2:0"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="yCbCrPositioningType">
        <xsd:simpleContent>
          <xsd:extension base="yCbCrPositioning_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="yCbCrPositioning_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="centered"/>
          <xsd:enumeration value="co-sited"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="stripOffsetsType">
        <xsd:sequence>
          <xsd:element name="StripOffset" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="Index" type="xsd:nonNegativeInteger"/>
                <xsd:element name="Offset" type="xsd:positiveInteger"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="stripByteCountsType">
        <xsd:sequence>
          <xsd:element name="StripByteCount" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="Index" type="xsd:nonNegativeInteger"/>
                <xsd:element name="Bytes" type="xsd:positiveInteger"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="whitePointType">
        <xsd:complexContent>
          <xsd:extension base="chromaticity">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>

      <xsd:complexType name="primaryChromaticitiesType">
        <xsd:sequence>
          <xsd:element name="Color_1" type="chromaticity"/>
          <xsd:element name="Color_2" type="chromaticity"/>
          <xsd:element name="Color_3" type="chromaticity"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="chromaticity">
        <xsd:sequence>
          <xsd:element name="X" type="nonNegativeReal"/>
          <xsd:element name="Y" type="nonNegativeReal"/>
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="yCbCrCoefficientsType">
        <xsd:sequence>
          <xsd:element name="Coefficient_1" type="nonNegativeReal"/>
          <xsd:element name="Coefficient_2" type="nonNegativeReal"/>
          <xsd:element name="Coefficient_3" type="nonNegativeReal"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="subjectLocationType">
        <xsd:sequence>
          <xsd:element name="CenterX" type="xsd:nonNegativeInteger"/>
          <xsd:element name="CenterY" type="xsd:nonNegativeInteger"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="subjectAreaType">
        <xsd:complexContent>
          <xsd:extension base="subjectLocationType">
            <xsd:choice>
              <xsd:element name="Diameter" type="xsd:positiveInteger"/>
              <xsd:sequence>
                <xsd:element name="Width" type="xsd:positiveInteger"/>
                <xsd:element name="Height" type="xsd:positiveInteger"/>
              </xsd:sequence>
            </xsd:choice>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>

      <xsd:complexType name="customRenderedType">
        <xsd:simpleContent>
          <xsd:extension base="customRendered_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="customRendered_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Normal process"/>
          <xsd:enumeration value="Custom process"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="exposureModeType">
        <xsd:simpleContent>
          <xsd:extension base="exposureMode_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="exposureMode_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Auto exposure"/>
          <xsd:enumeration value="Manual exposure"/>
          <xsd:enumeration value="Auto bracket"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="whiteBalanceType">
        <xsd:simpleContent>
          <xsd:extension base="whiteBalance_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="whiteBalance_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Auto"/>
          <xsd:enumeration value="Manual"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="sceneCaptureType">
        <xsd:simpleContent>
          <xsd:extension base="sceneCapture_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="sceneCapture_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Standard"/>
          <xsd:enumeration value="Landscape"/>
          <xsd:enumeration value="Portrait"/>
          <xsd:enumeration value="Night scene"/>
          <xsd:enumeration value=""/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gainControlType">
        <xsd:simpleContent>
          <xsd:extension base="gainControl_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gainControl_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="None"/>
          <xsd:enumeration value="Low gain up"/>
          <xsd:enumeration value="High gain up"/>
          <xsd:enumeration value="Low gain down"/>
          <xsd:enumeration value="High gain down"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="contrastType">
        <xsd:simpleContent>
          <xsd:extension base="contrast_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="contrast_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Normal"/>
          <xsd:enumeration value="Soft"/>
          <xsd:enumeration value="Hard"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="saturationType">
        <xsd:simpleContent>
          <xsd:extension base="saturation_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="saturation_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Normal"/>
          <xsd:enumeration value="Low saturation"/>
          <xsd:enumeration value="High saturation"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="sharpnessType">
        <xsd:simpleContent>
          <xsd:extension base="contrast_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>

      <xsd:complexType name="subjectDistanceRangeType">
        <xsd:simpleContent>
          <xsd:extension base="subjectDistanceRange_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="subjectDistanceRange_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="unknown"/>
          <xsd:enumeration value="Macro"/>
          <xsd:enumeration value="Close view"/>
          <xsd:enumeration value="Distant view"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="uuidType">
        <xsd:simpleContent>
          <xsd:extension base="uuid_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="uuid_t">
        <xsd:restriction base="xsd:hexBinary">
          <xsd:pattern value=".{8}-.{4}-.{4}-.{4}-.{12}"/>
        </xsd:restriction>
      </xsd:simpleType>

      <!--
           TYPES FOR THE GPS IFD
       -->
      <xsd:complexType name="gpsLatitudeRefType">
        <xsd:simpleContent>
          <xsd:extension base="gpsLatitudeRef_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsLatitudeRef_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="North latitude"/>
          <xsd:enumeration value="South latitude"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsAltitudeRefType">
        <xsd:simpleContent>
          <xsd:extension base="gpsAltitudeRef_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsAltitudeRef_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Sea level"/>
          <xsd:enumeration value="Sea level reference"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsLatitudeType">
        <xsd:simpleContent>
          <xsd:extension base="gpsLatitude_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsLatitude_t">
        <xsd:restriction base="xsd:float">
          <xsd:minInclusive value="0.0"/>
          <xsd:maxInclusive value="90.0"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsLongitudeRefType">
        <xsd:simpleContent>
          <xsd:extension base="gpsLongitudeRef_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsLongitudeRef_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="East longitude"/>
          <xsd:enumeration value="West longitude"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsLongitudeType">
        <xsd:simpleContent>
          <xsd:extension base="gpsLongitude_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsLongitude_t">
        <xsd:restriction base="xsd:float">
          <xsd:minInclusive value="0.0"/>
          <xsd:maxInclusive value="180.0"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsBearingType">
        <xsd:simpleContent>
          <xsd:extension base="gpsBearing_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsBearing_t">
        <xsd:restriction base="xsd:float">
          <xsd:minInclusive value="0.0"/>
          <xsd:maxExclusive value="360.0"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsStatusType">
        <xsd:simpleContent>
          <xsd:extension base="gpsStatus_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsStatus_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Measurement in progress"/>
          <xsd:enumeration value="Measurement interoperability"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsMeasureModeType">
        <xsd:simpleContent>
          <xsd:extension base="gpsMeasureMode_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsMeasureMode_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="2-dimensional measurement"/>
          <xsd:enumeration value="3-dimensional measurement"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsSpeedRefType">
        <xsd:simpleContent>
          <xsd:extension base="gpsSpeedRef_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsSpeedRef_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Kilometers per hour"/>
          <xsd:enumeration value="Miles per hour"/>
          <xsd:enumeration value="Knots"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsDirectionType">
        <xsd:simpleContent>
          <xsd:extension base="gpsDirection_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsDirection_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="True direction"/>
          <xsd:enumeration value="Magnetic direction"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsDistanceRefType">
        <xsd:simpleContent>
          <xsd:extension base="gpsDistanceRef_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsDistanceRef_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Kilometers"/>
          <xsd:enumeration value="Miles"/>
          <xsd:enumeration value="Knots"/>
        </xsd:restriction>
      </xsd:simpleType>

      <xsd:complexType name="gpsDifferentialType">
        <xsd:simpleContent>
          <xsd:extension base="gpsDifferential_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="gpsDifferential_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Measurement without differential correction"/>
          <xsd:enumeration value="Differential correction applied"/>
        </xsd:restriction>
      </xsd:simpleType>

      <!--
           TYPES FOR THE INTEROPERABILTY IFD
         -->
      <xsd:complexType name="interoperabilityType">
        <xsd:simpleContent>
          <xsd:extension base="interoperability_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
      <xsd:simpleType name="interoperability_t">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="R98"/>
          <xsd:enumeration value="THM"/>
          <xsd:enumeration value="R03"/>
        </xsd:restriction>
      </xsd:simpleType>

      <!-- GENERIC TYPE

            A generic type to hold any type of tag data.
            Defines a name, value, datatype triplet
            Datatype values refer to types as defined by XML Schema.

            singleFieldType is for EXIF tag that define a single
            value, the common case.

            repeatedFieldTyp is for the uncommon case where many
            data items are defined in an EXIF tag.

        -->
      <xsd:complexType name="singleFieldType">
        <xsd:complexContent>
          <xsd:extension base="singleField_t">
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>

      <xsd:complexType name="repeatedFieldType">
        <xsd:sequence>
          <xsd:element name="Field" type="singleField_t" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:complexType>

      <xsd:complexType name="singleField_t">
        <xsd:sequence>
          <xsd:element name="Name" type="xsd:string"/>
          <xsd:element name="Value" type="xsd:string"/>
          <xsd:element name="Datatype">
            <xsd:simpleType>
              <xsd:annotation>
                <xsd:documentation>The enumerated datatype values refer to types
                    defined by XML Schema
                </xsd:documentation>
              </xsd:annotation>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="string"/>
                <xsd:enumeration value="integer"/>
                <xsd:enumeration value="float"/>
                <xsd:enumeration value="date"/>
                <xsd:enumeration value="time"/>
                <xsd:enumeration value="dateTime"/>
                <xsd:enumeration value="hexBinary"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>

      <!-- END TYPE DEFINITIONS -->

      <!--
           THE GLOBAL ELEMENT
        -->
      <xsd:element name="exifMetadata">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="TiffIfd" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Tags from the TIFF IFD</xsd:documentation>
              </xsd:annotation>
              <xsd:complexType>
                <xsd:all>

                  <!-- Tags relating to image data structure -->
                  <xsd:element name="ImageWidth" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="ImageLength" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="BitsPerSample" type="bitsPerSampleType" minOccurs="0"/>
                  <xsd:element name="Compression" type="compressionType" minOccurs="0"/>
                  <xsd:element name="PhotometricInterpretation" type="photometricInterpretationType" minOccurs="0"/>
                  <xsd:element name="Orientation" type="orientationType" minOccurs="0"/>
                  <xsd:element name="SamplesPerPixel" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="PlanarConfiguration" type="planarConfigurationType" minOccurs="0"/>
                  <xsd:element name="YCbCrSubSampling" type="yCbCrSubSamplingType" minOccurs="0"/>
                  <xsd:element name="YCbCrPositioning" type="yCbCrPositioningType" minOccurs="0"/>
                  <xsd:element name="XResolution" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Unit is pixels per ResolutionUnit</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="YResolution" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Unit is pixels per Resolution Unit</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="ResolutionUnit" type="resolutionType" minOccurs="0"/>

                  <!--Tags relating to recording offset -->
                  <xsd:element name="StripOffsets" type="stripOffsetsType" minOccurs="0"/>
                  <xsd:element name="RowsPerStrip" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="StripByteCounts" type="stripByteCountsType" minOccurs="0"/>
                  <xsd:element name="JPEGInterChangeFormat" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="JPEGInterChangeFormatLength" type="positiveIntegerType" minOccurs="0"/>

                  <!-- Tags relating to image data characteristics -->
                  <xsd:element name="TransferFunction" type="xsd:anyType" minOccurs="0"/>
                  <xsd:element name="WhitePoint" type="whitePointType" minOccurs="0"/>
                  <xsd:element name="PrimaryChromaticities" type="primaryChromaticitiesType" minOccurs="0"/>
                  <xsd:element name="YCbCrCoefficients" type="yCbCrCoefficientsType" minOccurs="0"/>
                  <xsd:element name="ReferenceBlackWhite" type="primaryChromaticitiesType" minOccurs="0"/>

                  <!--Other tags -->
                  <xsd:element name="DateTime" type="dateTimeType" minOccurs="0"/>
                  <xsd:element name="ImageDescription" type="stringType" minOccurs="0"/>
                  <xsd:element name="Make" type="stringType" minOccurs="0"/>
                  <xsd:element name="Model" type="stringType" minOccurs="0"/>
                  <xsd:element name="Software" type="stringType" minOccurs="0"/>
                  <xsd:element name="Artist" type="stringType" minOccurs="0"/>
                  <xsd:element name="Copyright" type="stringType" minOccurs="0"/>

                  <!-- Placeholder tags for future tags that may be defined -->
                  <xsd:element name="TiffField1" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="TiffField2" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="TiffField3" type="repeatedFieldType" minOccurs="0"/>

                </xsd:all>
              </xsd:complexType>
            </xsd:element>

            <xsd:element name="ExifIfd">
              <xsd:annotation>
                <xsd:documentation>Tags from the EXIF IFD</xsd:documentation>
              </xsd:annotation>
              <xsd:complexType>
                <xsd:all>

                  <!-- Tags releating to version -->
                  <xsd:element name="ExifVersion" type="stringType" minOccurs="0"/>
                  <xsd:element name="FlashpixVersion" type="stringType" minOccurs="0"/>

                  <!-- Tags relating to image data characteristics -->
                  <xsd:element name="ColorSpace" type="colorSpaceType" minOccurs="0"/>

                  <!-- Tags relating to image configuration -->
                  <xsd:element name="ComponentsConfiguration" type="stringType" minOccurs="0"/>
                  <xsd:element name="CompressedBitsPerPixel" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="PixelXDimension" type="nonNegativeIntegerType" minOccurs="0"/>
                  <xsd:element name="PixelYDimension" type="nonNegativeIntegerType" minOccurs="0"/>

                  <!-- Tags relating to user information -->
                  <xsd:element name="MakerNote" type="repeatedFieldType" minOccurs="0"/>
                  <xsd:element name="UserComment" type="stringType" minOccurs="0"/>

                  <!-- Tag relating to related file information -->
                  <xsd:element name="RelatedSoundFile" type="stringType" minOccurs="0"/>

                  <!-- Tags relating to date and time -->
                  <xsd:element name="DateTimeOriginal" type="dateTimeType" minOccurs="0"/>
                  <xsd:element name="DateTimeDigitized" type="dateTimeType" minOccurs="0"/>
                  <xsd:element name="SubSecTime" type="nonNegativeIntegerType" minOccurs="0"/>
                  <xsd:element name="SubSecTimeOriginal" type="nonNegativeIntegerType" minOccurs="0"/>
                  <xsd:element name="SubSecTimeDigitized" type="nonNegativeIntegerType" minOccurs="0"/>

                  <!-- Tags relating to picture taking conditions -->
                  <xsd:element name="ExposureTime" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Units is seconds</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="FNumber" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="ExposureProgram" type="exposureProgramType" minOccurs="0"/>
                  <xsd:element name="SpectralSensitivity" type="stringType" minOccurs="0"/>
                  <xsd:element name="ISOSpeedRatings" type="nonNegativeIntegerType" minOccurs="0"/>
                  <xsd:element name="OECF" type="repeatedFieldType" minOccurs="0"/>
                  <xsd:element name="ShutterSpeedValue" type="realType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is the APEX Value</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="ApertureValue" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The  unit is the APEX value</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="BrightnessValue" type="realType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is the APEX value</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="ExposureBiasValue" type="realType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is the APEX value</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="MaxApertureValue" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is the APEX value</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="SubjectDistance" type="stringType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is meters</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="MeteringMode" type="meteringModeType" minOccurs="0"/>
                  <xsd:element name="LightSource" type="lightSourceType" minOccurs="0"/>
                  <xsd:element name="Flash" type="flashType" minOccurs="0"/>
                  <xsd:element name="FocalLength" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is millimeters.</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="SubjectArea" type="subjectAreaType" minOccurs="0"/>
                  <xsd:element name="FlashEnergy" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is Beam Candle Power Seconds</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="SpatialFrequencyResponse" type="repeatedFieldType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Not implemented</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="FocalPlaneXResolution" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is pixels</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="FocalPlaneYResolution" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>The unit is pixels</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="FocalPlaneResolutionUnit" type="resolutionType" minOccurs="0"/>
                  <xsd:element name="SubjectLocation" type="subjectLocationType" minOccurs="0"/>
                  <xsd:element name="ExposureIndex" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="SensingMethod" type="sensingMethodType" minOccurs="0"/>
                  <xsd:element name="FileSource" type="fileSourceType" minOccurs="0"/>
                  <xsd:element name="SceneType" type="stringType" minOccurs="0"/>
                  <xsd:element name="CFAPattern" type="repeatedFieldType" minOccurs="0"/>
                  <xsd:element name="CustomRendered" type="customRenderedType" minOccurs="0"/>
                  <xsd:element name="ExposureMode" type="exposureModeType" minOccurs="0"/>
                  <xsd:element name="WhiteBalance" type="whiteBalanceType" minOccurs="0"/>
                  <xsd:element name="DigitalZoomRatio" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="FocalLengthIn35mmFilm" type="positiveIntegerType" minOccurs="0"/>
                  <xsd:element name="SceneCaptureType" type="sceneCaptureType" minOccurs="0"/>
                  <xsd:element name="GainControl" type="gainControlType" minOccurs="0"/>
                  <xsd:element name="Contrast" type="contrastType" minOccurs="0"/>
                  <xsd:element name="Saturation" type="saturationType" minOccurs="0"/>
                  <xsd:element name="Sharpness" type="sharpnessType" minOccurs="0"/>
                  <xsd:element name="DeviceSettingDescription" type="repeatedFieldType" minOccurs="0"/>
                  <xsd:element name="SubjectDistanceRange" type="subjectDistanceRangeType" minOccurs="0"/>
                  <xsd:element name="ImageUniqueID" type="uuidType" minOccurs="0"/>
                  <xsd:element name="Gamma" type="nonNegativeRealType" minOccurs="0"/>

                  <!-- Placeholder tags for future tags that may be defined -->
                  <xsd:element name="ExifField1" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="ExifField2" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="ExifField3" type="repeatedFieldType" minOccurs="0"/>

                </xsd:all>
                <xsd:attributeGroup ref="exifAttrs"/>
              </xsd:complexType>
            </xsd:element>

            <xsd:element name="GpsIfd" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Tags from the GPS IFD</xsd:documentation>
              </xsd:annotation>
              <xsd:complexType>
                <xsd:all>
                  <xsd:element name="GPSVersionID" type="stringType"/>
                  <xsd:element name="GPSLatitudeRef" type="gpsLatitudeRefType" minOccurs="0"/>
                  <xsd:element name="GPSLatitude" type="gpsLatitudeType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Unit is decimal degrees</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="GPSLongitudeRef" type="gpsLongitudeRefType" minOccurs="0"/>
                  <xsd:element name="GPSLongitude" type="gpsLongitudeType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Unit is decimal degrees</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="GPSAltitudeRef" type="gpsAltitudeRefType" minOccurs="0"/>
                  <xsd:element name="GPSAltitude" type="nonNegativeRealType" minOccurs="0">
                    <xsd:annotation>
                      <xsd:documentation>Unit is meters</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="GPSTimeStamp" type="timeType" minOccurs="0"/>
                  <xsd:element name="GPSSatellites" type="stringType" minOccurs="0"/>
                  <xsd:element name="GPSStatus" type="gpsStatusType" minOccurs="0"/>
                  <xsd:element name="GPSMeasureMode" type="gpsMeasureModeType" minOccurs="0"/>
                  <xsd:element name="GPSDOP" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="GPSSpeedRef" type="gpsSpeedRefType" minOccurs="0"/>
                  <xsd:element name="GPSSpeed" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="GPSTrackRef" type="gpsDirectionType" minOccurs="0"/>
                  <xsd:element name="GPSTrack" type="gpsBearingType" minOccurs="0"/>
                  <xsd:element name="GPSImgDirectionRef" type="gpsDirectionType" minOccurs="0"/>
                  <xsd:element name="GPSImgDirection" type="gpsBearingType" minOccurs="0"/>
                  <xsd:element name="GPSMapDatum" type="stringType" minOccurs="0"/>
                  <xsd:element name="GPSDestLatitudeRef" type="gpsLatitudeRefType" minOccurs="0"/>
                  <xsd:element name="GPSDestLatitude" type="gpsLatitudeType" minOccurs="0"/>
                  <xsd:element name="GPSDestLongitudeRef" type="gpsLongitudeRefType" minOccurs="0"/>
                  <xsd:element name="GPSDestLongitude" type="gpsLongitudeType" minOccurs="0"/>
                  <xsd:element name="GPSDestBearingRef" type="gpsDirectionType" minOccurs="0"/>
                  <xsd:element name="GPSDestBearing" type="gpsBearingType" minOccurs="0"/>
                  <xsd:element name="GPSDestDistanceRef" type="gpsDistanceRefType" minOccurs="0"/>
                  <xsd:element name="GPSDestDistance" type="nonNegativeRealType" minOccurs="0"/>
                  <xsd:element name="GPSProcessingMethod" type="stringType" minOccurs="0"/>
                  <xsd:element name="GPSAreaInformation" type="stringType" minOccurs="0"/>
                  <xsd:element name="GPSDateStamp" type="dateType" minOccurs="0"/>
                  <xsd:element name="GPSDifferential" type="gpsDifferentialType" minOccurs="0"/>

                  <!-- Placeholder tags for future tags that may be defined -->
                  <xsd:element name="GPSField1" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="GPSField2" type="singleFieldType" minOccurs="0"/>
                  <xsd:element name="GPSField3" type="repeatedFieldType" minOccurs="0"/>
                </xsd:all>
                <xsd:attributeGroup ref="exifAttrs"/>
              </xsd:complexType>
            </xsd:element>

            <xsd:element name="InteroperabilityIfd" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Tags from the Interoperability IFD</xsd:documentation>
              </xsd:annotation>
              <xsd:complexType>
                <xsd:all>
                  <xsd:element name="InteroperabilityIndex" type="interoperabilityType" minOccurs="0"/>
                </xsd:all>
                <xsd:attributeGroup ref="exifAttrs"/>
              </xsd:complexType>
            </xsd:element>

          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>

## F.3 XML Schema for IPTC-IIM Metadata

This schema is the content model for IPTC-IIM metadata retrieved from images. The namespace for this schema is `http://xmlns.oracle.com/ord/meta/iptc`.

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright (c) 2004, 2005, Oracle.  All rights reserved. -->
    <xsd:schema  xmlns="http://xmlns.oracle.com/ord/meta/iptc"
         targetNamespace="http://xmlns.oracle.com/ord/meta/iptc"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         elementFormDefault="qualified" attributeFormDefault="unqualified">

      <xsd:annotation>
        <xsd:documentation>

          Introduction
            This is the Oracle interMedia schema for metadata stored in Application
            record sets of the IPTC-NAA Information Interchange Model Version 4.
            This metadata is often referred to as 'IPTC' tags.

            For the JPEG file format, IPTC metadata is parsed from the APP13 marker.
            For the TIFF file format, IPTC metadata is parsed from tag 33723.

            All tags with string values are decoded using the ISO-8859-1 character
            set. The resulting strings may contain characters that are legal in the
            character set but are illegal in XML documents. Illegal XML characters
            are replaced with the space (0x20) character.

          Supported datasets
            The following datasets from the application record are extracted.

              2:00  recordVersion
              2:05  objectName
              2:07  editStatus
              2:10  urgency
              2:15  category
              2:20  supplementalCategory
              2:22  fixtureIdentifer
              2:25  keyword
              2:26  contentLocation:code
              2:27  contentLocation:name
              2:40  instructions
              2:55  dateCreated
              2:60  timeCreated
              2:62  digitalCreationDate
              2:63  digitalCreationTime
              2:80  byline:author
              2:85  byline:authorTitle
              2:90  city
              2:92  subLocation
              2:95  provinceState
              2:100 country
              2:101 location
              2:103 transmissionReference
              2:105 headline
              2:110 credit
              2:115 source
              2:116 copyright
              2:118 contact
              2:120 caption
              2:122 captionWriter
              2:135 languageId

          Structure
            The schema defines a number of types, both simple and complex,
            to represent some of the IPTC tags. The itpcMetadataType is defined
            as a sequence of all the supported IPTC tags. This type is used to define
            a single global element that can appear in an instance document.

        </xsd:documentation>
      </xsd:annotation>

      <!-- Basic type definitions  -->
      <xsd:simpleType name="urgencyType">
        <xsd:restriction base="xsd:positiveInteger">
          <xsd:minExclusive value="1"/>
          <xsd:maxInclusive value="8"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="locationType">
        <xsd:sequence>
          <xsd:element name="code" type="xsd:string"/>
          <xsd:element name="name" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="bylineType">
        <xsd:sequence>
          <xsd:element name="author" type="xsd:string"/>
          <xsd:element name="authorTitle" minOccurs="0" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>

      <!-- Type definition for the global element  -->
      <xsd:complexType name="iptcMetadataType">
        <xsd:sequence>
          <xsd:element name="recordVersion" type="xsd:integer"/>
          <xsd:element name="objectName" minOccurs="0" type="xsd:string"/>
          <xsd:element name="editStatus" minOccurs="0" type="xsd:string"/>
          <xsd:element name="urgency" minOccurs="0" type="urgencyType"/>
          <xsd:element name="category" minOccurs="0" type="xsd:string"/>
          <xsd:element name="supplementalCategory" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
          <xsd:element name="fixtureIdentifier" minOccurs="0" type="xsd:string"/>
          <xsd:element name="keyword" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
          <xsd:element name="contentLocation" minOccurs="0" maxOccurs="unbounded" type="locationType"/>
          <xsd:element name="instructions" minOccurs="0" type="xsd:string"/>
          <xsd:element name="dateCreated" minOccurs="0" type="xsd:date"/>
          <xsd:element name="timeCreated" minOccurs="0" type="xsd:string"/>
          <xsd:element name="digitalCreationDate" minOccurs="0"   type="xsd:date"/>
          <xsd:element name="digitalCreationTime" minOccurs="0"  type="xsd:string"/>
          <xsd:element name="byline" minOccurs="0" maxOccurs="unbounded" type="bylineType"/>
          <xsd:element name="city" minOccurs="0" type="xsd:string"/>
          <xsd:element name="subLocation" minOccurs="0" type="xsd:string"/>
          <xsd:element name="provinceState" minOccurs="0" type="xsd:string"/>
          <xsd:element name="country" minOccurs="0" type="xsd:string"/>
          <xsd:element name="location" minOccurs="0" type="xsd:string"/>
          <xsd:element name="transmissionReference" minOccurs="0" type="xsd:string"/>
          <xsd:element name="headline" minOccurs="0" type="xsd:string"/>
          <xsd:element name="credit" minOccurs="0" type="xsd:string"/>
          <xsd:element name="source" minOccurs="0" type="xsd:string"/>
          <xsd:element name="copyright" minOccurs="0" type="xsd:string"/>
          <xsd:element name="contact" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
          <xsd:element name="caption" minOccurs="0" type="xsd:string"/>
          <xsd:element name="captionWriter" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
          <xsd:element name="languageId" minOccurs="0" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>

      <!-- The gobal element -->
      <xsd:element name="iptcMetadata" type="iptcMetadataType"/>

    </xsd:schema>

## F.4 XML Schema for ORDImage Attributes

This schema is the content model for the object attributes of ORDImage. The namespace for this schema is `http://xmlns.oracle.com/ord/meta/ordimage`.

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright 2004, 2005 Oracle.  All rights reserved. -->
    <xsd:schema xmlns="http://xmlns.oracle.com/ord/meta/ordimage"
         targetNamespace="http://xmlns.oracle.com/ord/meta/ordimage"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         elementFormDefault="qualified" attributeFormDefault="unqualified">

      <xsd:annotation>
        <xsd:documentation>

          Introduction
            Oracle interMedia schema for ORDSYS.ORDImage attributes
            Elements are optional and can appear in any order.
        </xsd:documentation>
      </xsd:annotation>

      <xsd:complexType name="ordImageAttributesType">
        <xsd:all minOccurs="0">
          <xsd:element name="height" type="xsd:positiveInteger" minOccurs="0"/>
          <xsd:element name="width" type="xsd:positiveInteger" minOccurs="0"/>
          <xsd:element name="contentLength" type="xsd:positiveInteger" minOccurs="0"/>
          <xsd:element name="fileFormat" type="xsd:string" minOccurs="0"/>
          <xsd:element name="contentFormat" type="xsd:string" minOccurs="0"/>
          <xsd:element name="compressionFormat" type="xsd:string" minOccurs="0"/>
          <xsd:element name="mimeType" type="xsd:string" minOccurs="0"/>
        </xsd:all>
      </xsd:complexType>

      <xsd:element name="ordImageAttributes" type="ordImageAttributesType"/>
    </xsd:schema>

## F.5 XML Schema for XMP Metadata

This schema is the content model for XMP metadata retrieved from images. It is also the content model for writing metadata to images. The namespace for this schema is `http://xmlns.oracle.com/ord/meta/xmp`.

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright (c) 2004, 2005, Oracle.  All rights reserved. -->
    <xsd:schema xmlns="http://xmlns.oracle.com/ord/meta/xmp"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         xmlns:xdb="http://xmlns.oracle.com/xdb"
         targetNamespace="http://xmlns.oracle.com/ord/meta/xmp"
         elementFormDefault="qualified"
         attributeFormDefault="unqualified">

      <xsd:annotation>
        <xsd:documentation>

          Introduction
           This is the Oracle interMedia schema for metadata embedded in XMP packets.
            The schema provides for a single element from the RDF namespace.
            As defined in the January 2004 version of the XMP specification,
            this element should be an rdf:RDF element.
            XMP is defined by Adobe Systems Incorporated. For more information
            about XMP, see the XMP Specification at the Adobe website.
        </xsd:documentation>
      </xsd:annotation>

      <xsd:complexType name="xmpMetadataType" mixed="false">
        <xsd:sequence>
          <xsd:any namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xdb:SQLType="CLOB"
               processContents="skip" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:element name="xmpMetadata" type="xmpMetadataType"/>
    </xsd:schema>